Web 和應(yīng)用服務(wù)器經(jīng)常被混淆,部分是因?yàn)樗鼈円黄鸸ぷ鳎糠质且驗(yàn)橐恍┕?yīng)商將 Web 和應(yīng)用服務(wù)器整合到兩用機(jī)器中。類似地,使用“Web 應(yīng)用程序服務(wù)器”等術(shù)語給人的印象是它們是雙單元,而實(shí)際情況是它們通常是不同的、獨(dú)立的節(jié)點(diǎn)。
Web 服務(wù)器和應(yīng)用程序服務(wù)器之間的關(guān)鍵區(qū)別在于它們?nèi)绾谓桓?Web 和應(yīng)用程序內(nèi)容。從互聯(lián)網(wǎng)的早期開始,Web 服務(wù)器一直是為 Web 客戶端請求提供服務(wù)的媒介。Web 服務(wù)器接收客戶端請求并從相關(guān)數(shù)據(jù)庫中檢索內(nèi)容以提供給客戶端。相比之下,應(yīng)用服務(wù)器也為客戶端提供 Web 內(nèi)容,但能夠處理動(dòng)態(tài)請求。
隨著萬維網(wǎng)的發(fā)展,網(wǎng)頁腳本從 HTML 轉(zhuǎn)變?yōu)镴avaScript,網(wǎng)頁內(nèi)容變得更具交互性。動(dòng)態(tài)腳本語言的引入推動(dòng)了Web 開發(fā)向前發(fā)展,并產(chǎn)生了當(dāng)今可用的軟件、工具和應(yīng)用程序。這種轉(zhuǎn)變推動(dòng)了 Web 服務(wù)器功能的界限,并導(dǎo)致在服務(wù)器管理中采用另一臺稱為應(yīng)用程序服務(wù)器的高度專業(yè)化的計(jì)算機(jī)。本文著眼于 Web 服務(wù)器和應(yīng)用服務(wù)器所扮演的角色以及它們之間的區(qū)別。
什么是網(wǎng)絡(luò)服務(wù)器?
Web 服務(wù)器是負(fù)責(zé)以下各項(xiàng)的計(jì)算機(jī)系統(tǒng):
- 收藏
- 加工
- 并向客戶(用戶/瀏覽器)提供 Web 內(nèi)容
為了檢索 Web 資源,用戶使用 Web 瀏覽器從 Web 服務(wù)器請求 Web 內(nèi)容。無論是虛擬設(shè)備還是物理設(shè)備,Web 服務(wù)器都會(huì)接收來自 Web 瀏覽器的 HTTP 請求,將請求轉(zhuǎn)換為網(wǎng)頁的底層數(shù)據(jù)庫,并使用請求的資源進(jìn)行響應(yīng)。也就是說……如果資源是靜態(tài)內(nèi)容,例如 PDF 或新聞文章。
HTML:靜態(tài)內(nèi)容
自 1990 年代初以來,超文本標(biāo)記語言 (HTML) 一直是用于生成網(wǎng)頁內(nèi)容的主要編程語言。靜態(tài)網(wǎng)頁存儲(chǔ)在 Web 組織的數(shù)據(jù)庫中,以 HTML 代碼的形式顯示在客戶端的 Web 瀏覽器上。用戶將 HTML 內(nèi)容識別為字體、文檔、圖像和視頻。這些網(wǎng)頁上的內(nèi)容是靜態(tài)的,因?yàn)?Web 服務(wù)器為請求該特定網(wǎng)頁的所有客戶端檢索相同的實(shí)例。這種對靜態(tài)數(shù)據(jù)的輕松服務(wù)使 Web 服務(wù)器能夠?yàn)槎鄠€(gè)網(wǎng)頁和站點(diǎn)提供服務(wù)。
網(wǎng)絡(luò)服務(wù)器有限
遺憾的是,Web 服務(wù)器在面向服務(wù)架構(gòu) (SOA) 中的角色并不是管理 2020 年代高級 Web 內(nèi)容請求的萬能,這讓我們想到了 Web 服務(wù)器最好的朋友,即應(yīng)用程序服務(wù)器。
什么是應(yīng)用服務(wù)器?
與 Web 服務(wù)器一樣,應(yīng)用程序服務(wù)器是一臺能夠處理 HTTP 請求、為基于 Web 的應(yīng)用程序提供服務(wù)以及使用 Web容器來滿足客戶端請求的計(jì)算機(jī)。然而,應(yīng)用服務(wù)器更進(jìn)一步的是它們對應(yīng)用數(shù)據(jù)庫的訪問和動(dòng)態(tài)內(nèi)容的傳輸。憑借處理業(yè)務(wù)邏輯請求的能力,承擔(dān)比 Web 服務(wù)器更重的工作負(fù)載,并支持多線程,應(yīng)用程序服務(wù)器是推動(dòng)當(dāng)前應(yīng)用程序經(jīng)濟(jì)的主力軍。
動(dòng)態(tài)內(nèi)容需要更多的服務(wù)器專業(yè)化
任何提供客戶端不需要啟動(dòng)另一個(gè)頁面的交互式或?qū)崟r(shí)工具的網(wǎng)頁都可能歸功于動(dòng)態(tài)腳本和應(yīng)用程序服務(wù)器的工作。動(dòng)態(tài)網(wǎng)頁通常包括實(shí)時(shí)分析、金融交易和安全軟件。例如,谷歌是世界上訪問量最大的網(wǎng)站,為網(wǎng)絡(luò)客戶端提供了大量工具。其中一個(gè)程序是內(nèi)置于 Google 搜索引擎的計(jì)算器。當(dāng)客戶進(jìn)行數(shù)學(xué)方程式搜索時(shí),Google 會(huì)識別該請求并在搜索結(jié)果網(wǎng)頁上顯示計(jì)算器。如果客戶繼續(xù)使用計(jì)算器,他們會(huì)注意到 URL 在所有計(jì)算中都沒有改變。由于頁面中嵌入了動(dòng)態(tài)腳本,計(jì)算器可以對客戶端輸入做出反應(yīng),并能夠處理與 Web 服務(wù)器活動(dòng)分開的請求。
Web 和應(yīng)用程序服務(wù)器如何協(xié)同工作?
下圖顯示了三個(gè)通信方:客戶端、應(yīng)用程序服務(wù)器和數(shù)據(jù)庫服務(wù)器。當(dāng)用戶使用 Google Chrome 或 Firefox 等網(wǎng)絡(luò)瀏覽器時(shí),瀏覽器充當(dāng)請求特定資源的客戶端。在下面的實(shí)例中,Web 服務(wù)器位于客戶端和應(yīng)用程序服務(wù)器之間,為 HTTP 請求提供服務(wù),Web 服務(wù)器可以促進(jìn)靜態(tài)內(nèi)容。當(dāng) Web 服務(wù)器收到超出其能力的請求時(shí),應(yīng)用服務(wù)器完成交換。
Web 服務(wù)器與應(yīng)用服務(wù)器之間的差異
網(wǎng)絡(luò)服務(wù)器
- 托管網(wǎng)頁并響應(yīng)請求
- 提供靜態(tài)內(nèi)容
- 僅使用 HTTP 協(xié)議
- 僅提供基于 Web 的應(yīng)用程序
- 不支持多線程
- 訪問靜態(tài)數(shù)據(jù)庫
- 促進(jìn)輕量級網(wǎng)絡(luò)流量
- 存儲(chǔ)容量低
- 使用網(wǎng)絡(luò)容器
- 適用于網(wǎng)絡(luò)瀏覽器
- 在瀏覽器上提供超文本
應(yīng)用服務(wù)器
- 托管應(yīng)用程序和高級數(shù)據(jù)資源
- 提供動(dòng)態(tài)內(nèi)容
- 為應(yīng)用程序使用 HTTP 和業(yè)務(wù)邏輯
- 為基于 Web 和企業(yè)的應(yīng)用程序提供服務(wù)
- 支持多線程并行
- 訪問應(yīng)用程序數(shù)據(jù)庫
- 促進(jìn)更重的數(shù)據(jù)工作負(fù)載
- 高存儲(chǔ)容量
- 使用 Web 和應(yīng)用程序客戶端容器
- 適用于瀏覽器、Web 和移動(dòng)應(yīng)用程序
- 提供海量數(shù)據(jù)資源